package org.liveboardgames.agricola.model.structure;

import org.liveboardgames.agricola.domain.action.Action;
import org.liveboardgames.agricola.domain.board.BoardTile;
import org.liveboardgames.agricola.domain.card.BakingImprovementCard;
import org.liveboardgames.agricola.domain.card.Card;
import org.liveboardgames.agricola.domain.card.CookingImprovementCard;
import org.liveboardgames.agricola.domain.card.ImprovementCard;
import org.liveboardgames.agricola.domain.card.ReferenceCard;
import org.liveboardgames.agricola.domain.common.AlternativeCost;
import org.liveboardgames.agricola.domain.farm.Farm;
import org.liveboardgames.agricola.domain.farm.FarmTile;
import org.liveboardgames.agricola.domain.player.Player;

public class TargetReplacementVisitor implements Visitor {

  private ReferenceCard refCard;

  private Card card;

  public TargetReplacementVisitor(ReferenceCard refCard, Card card) {
    this.refCard = refCard;
    this.card = card;
  }

  public void visit(Visitable visitable) {
    // TODO Auto-generated method stub

  }

  public void visit(Action action) {
    if (refCard.equals(action.getLink())) {
      action.setLink(card);
    }
    if (refCard.equals(action.getTarget())) {
      action.setTarget(card);
    }
  }

  public void visit(Card card) {
    // TODO Auto-generated method stub

  }

  public void visit(BakingImprovementCard card) {
    // TODO Auto-generated method stub

  }

  public void visit(CookingImprovementCard card) {
    // TODO Auto-generated method stub

  }

  public void visit(ImprovementCard card) {
    // TODO Auto-generated method stub

  }

  public void visit(Player player) {
    // TODO Auto-generated method stub

  }

  public void visit(Farm farm) {
    // TODO Auto-generated method stub

  }

  public void visit(FarmTile farmTile) {
    // TODO Auto-generated method stub

  }

  public void visit(BoardTile boardTile) {
    // TODO Auto-generated method stub

  }

  public void visit(AlternativeCost cost) {
    // TODO Auto-generated method stub

  }

}
